package com.mycode.finance.mapper;

import com.mycode.finance.entity.RiskPreference;
import com.mycode.finance.entity.RiskPreferenceExample;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 风险偏好Mapper接口
 * 用于风险偏好数据的CRUD操作
 */
public interface RiskPreferenceMapper {
  /**
   * 根据条件统计记录数
   * 
   * @param example 查询条件
   * @return 记录数
   */
  long countByExample(RiskPreferenceExample example);

  /**
   * 根据条件删除记录
   * 
   * @param example 删除条件
   * @return 影响行数
   */
  int deleteByExample(RiskPreferenceExample example);

  /**
   * 根据主键删除记录
   * 
   * @param id 主键ID
   * @return 影响行数
   */
  int deleteByPrimaryKey(Integer id);

  /**
   * 插入记录
   * 
   * @param record 风险偏好记录
   * @return 影响行数
   */
  int insert(RiskPreference record);

  /**
   * 选择性插入记录
   * 
   * @param record 风险偏好记录
   * @return 影响行数
   */
  int insertSelective(RiskPreference record);

  /**
   * 根据条件查询记录
   * 
   * @param example 查询条件
   * @return 风险偏好记录列表
   */
  List<RiskPreference> selectByExample(RiskPreferenceExample example);

  /**
   * 根据主键查询记录
   * 
   * @param id 主键ID
   * @return 风险偏好记录
   */
  RiskPreference selectByPrimaryKey(Integer id);

  /**
   * 根据用户ID查询记录
   * 
   * @param userId 用户ID
   * @return 风险偏好记录
   */
  RiskPreference selectByUserId(Integer userId);

  /**
   * 根据条件选择性更新记录
   * 
   * @param record  更新的记录
   * @param example 更新条件
   * @return 影响行数
   */
  int updateByExampleSelective(@Param("record") RiskPreference record, @Param("example") RiskPreferenceExample example);

  /**
   * 根据条件更新记录
   * 
   * @param record  更新的记录
   * @param example 更新条件
   * @return 影响行数
   */
  int updateByExample(@Param("record") RiskPreference record, @Param("example") RiskPreferenceExample example);

  /**
   * 根据主键选择性更新记录
   * 
   * @param record 更新的记录
   * @return 影响行数
   */
  int updateByPrimaryKeySelective(RiskPreference record);

  /**
   * 根据主键更新记录
   * 
   * @param record 更新的记录
   * @return 影响行数
   */
  int updateByPrimaryKey(RiskPreference record);
}